package com.xianyun.site.iblog.api.blog;

import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.xianyun.site.iblog.dto.blog.*;
import com.xianyun.site.iblog.dto.blog.data.ArticleDTO;
import com.xianyun.site.iblog.co.blog.ArticleCO;
import com.xianyun.site.iblog.dto.blog.data.ColumnDTO;
import com.xianyun.site.iblog.dto.blog.data.TagsDTO;

/**
 * 文章服务层接口
 * @author mac_zyj
 */
public interface ArticleServiceI {
    /**
     * 根据文章路径获取博客内容
     * @param articleViewByUrlQry  参数封装类
     * @return 博客内容
     */
    SingleResponse<ArticleCO> getArticleViewByUrl(ArticleViewByUrlQry articleViewByUrlQry);


    /**
     * 根据情况查询标签
     * @param qry 查询条件
     * @return 结果集合
     */
    MultiResponse<TagsDTO> selectUserTagList(TagSearchQry qry);

    /**
     * 根据情况查询专栏
     * @param qry 查询条件
     * @return 结果集合
     */
    MultiResponse<ColumnDTO> selectUserColumnList(ColumnSearchQry qry);

    /**
     * 查询博客文章列表
     *
     * @param articleListSortQry 查询封装类
     * @return 博客文章集合
     */
    PageResponse<ArticleDTO> selectArticleListBySort(ArticleListSortQry articleListSortQry);

    /**
     * 保存文章
     * @param articleAddCmd 文章添加封装类
     * @return 结果
     */
    Response saveBlogArticle(ArticleAddCmd articleAddCmd);


    /**
     * 修改博客文章
     *
     * @param articleUpdateCmd 文章修改封装类
     * @return 结果
     */
    Response updateBlogArticle(ArticleAddCmd articleUpdateCmd);

    /**
     * 根据Token和博客编号删除博客
     * @param blogId 博客编号
     * @param token Token
     * @return 响应结果
     */
    Response deleteBlogArticle(Integer blogId,String token);

}
